package org.zhadoop.streaming.operator;

import java.util.List;
import java.util.Map;

import org.zhadoop.streaming.event.IEventType;

/**
 * 流处理算子的基本接口
 * 所有流处理相关的算子实现，都来源于这个算子
 * 移除所有Set  接口，仅仅保留get接口，以保证属性在运行时不会被改变
 * 所有的外部Storm 实现，均依赖于这个接口
 * @author zwd
 *
 */
public interface IRichOperator extends IOperator,Configurable{
	
	/**
     * 获取算子id
     */
    String getOperatorId();
    
    /**
     * 获取算子并发度
     */
    int getParallelNumber();
    
    /**
     * 获取输入流的名称
     * @return
     */
    List<String> getInputStream();
    
    /**
     * 获取输出流名称
     * @return
     */
    String getOutputStream();
    
    /**
     * 获取输入的schema
     * @return
     */
    Map<String,IEventType> getInputSchema();
    
    /**
     * 获取输出的Schema
     * @return
     */
    IEventType getOutputSchema();
    
    /**
     * 获取分组的 信息
     * @return
     */
    Map<String,GroupInfo> getGroupInfo();
}
